import {
  Controller,
  Get,
  Post,
  Request,
  Query,
  Body,
  Param,
} from '@nestjs/common';
import { GirlService } from './girl.service';

@Controller('/girls')
export class GirlController {
  // 如果这里你看不懂，还请补一补ts基础，这一句就相当于this.girlService = new GirlService();
  constructor(private girlService: GirlService) {}

  @Get('/gidle')
  getGIDLEGirls() {
    return this.girlService.getGIDLEGirls();
  }

  // 得到post请求参数
  @Post('/addGIDLEGirl')
  // 简单来说，这个req其实就是请求体内容，通过req.body即可拿到请求体
  addGIDLEGirl(@Request() req) {
    // 当然开发者们也提供了简单写法，就是直接Body
    //   addGIDLEGirl(@Body() body): object {
    return this.girlService.addGIDLEGirl(req.body);
  }

  // 得到get请求参数
  @Get('/getGIDLEGirlById')
  // 简单来说，这个req其实就是请求体内容，通过req.query即可拿到所有的请求参数，我们这里只需要id，就只取id即可
  getGIDLEGirlById(@Request() req): object {
    // 不过每次都要req.query其实挺麻烦的，所以你可以使用 @Query query，这样你直接query.id就可以拿到了
    // getGIDLEGirlById(@Query() query): object {
    return this.girlService.getGIDLEGirlById(req.query.id);
  }

  // 动态路由，相信你一看就懂了， 无非就是一个 : 占位符，当然，是支持多个参数的，/:param1/:param2...这样写下去就好了，不过传参的时候要注意顺序不能错
  @Get('/findGIDLEGirlById/:id')
  // 当然，nest开发者也提供了@Param() params这样更方便拿到参数的写法，这里就不演示了
  findGIDLEGirlById(@Request() req): object {
    return this.girlService.findGIDLEGirlById(req.params.id);
  }

  @Get('/getGIDLEGirls')
  findAllGIDLEGirls() {
    return this.girlService.findAllGIDLEGirls();
  }

  @Get('/getGIDLEGirlsByName')
  findGIDLEGirlsByName(@Query() query) {
    return this.girlService.findGIDLEGirlsByName(query.name);
  }
}
